최근 변경
최근 토론
특수 기능
파일 올리기
작성이 필요한 문서
고립된 문서
고립된 분류
분류가 되지 않은 문서
편집된 지 오래된 문서
내용이 짧은 문서
내용이 긴 문서
차단 내역
RandomPage
라이선스
IP 사용자
18.191.181.186
설정
다크 모드로 전환
라이트 모드로 전환
로그인
진행 중인 사용자 토론이 있습니다.
여기를 눌러 알림 페이지로 이동합니다.
2025년 2분기
2급 관리자를 모집
중입니다.
New seed/개발노트
(r15 편집)
이동
삭제
역사
알림
현재 진행 중인
사용자 토론
이 있습니다.
[오류!]
편집 권한이 부족합니다. 로그인된 사용자 OR geoip:KR(이)여야 합니다. 해당 문서의
ACL 탭
을 확인하시기 바랍니다.
RAW 편집
[[분류:imitated seed 2]] [include(틀:상위 문서, 문서=New seed)] [목차] == 개요 == 분명 New seed 개발하기 시작했는데 아무도 관심이 없고 아무도 모르고 아무도 안 쓰고 심지어 공식 문서조차 없어서 그냥 귀찮아 개발노트랑 업데이트 일지나 대충 끄적이려고 만든 문서 중 하나 == 문제점 == [youtube(v2sr-GpNV6A, start=41, end=61)] ~~New seed === GTX-A~~ {{{+3 '''20초 요약'''}}} === 파서 === ==== 고질적 이슈 - 규식이 ==== {{{#!syntax javascript const rHeadings = /^(=\s(((?!\s=).)*)\s=|==\s(((?!\s==).)*)\s==|===\s(((?!\s===).)*)\s===|====\s(((?!\s====).)*)\s====|=====\s(((?!\s=====).)*)\s=====|======\s(((?!\s======).)*)\s======|=[#]\s(((?!\s[#]=).)*)\s[#]=|==[#]\s(((?!\s[#]==).)*)\s[#]==|===[#]\s(((?!\s[#]===).)*)\s[#]===|====[#]\s(((?!\s[#]====).)*)\s[#]====|=====[#]\s(((?!\s[#]=====).)*)\s[#]=====|======[#]\s(((?!\s[#]======).)*)\s[#]======)$/gm; const rHeading = [, ]; for(var i=1; i<=6; i++) { rHeading.push(RegExp(`^${multiply('=', i)}([#]|)\\s(((?!${multiply('=', i)}).)*)\\s([#]|)${multiply('=', i)}$`, 'm')); } }}} 엄청난 파서. ~~저거 해독하는데에 하루가 넘게 걸림~~ 심지어 원본은 더 처참하다. {{{#!syntax javascript const rHeadings = ver('4.7.2') ? /^(=\s(((?!\s=).)*)\s=|==\s(((?!\s==).)*)\s==|===\s(((?!\s===).)*)\s===|====\s(((?!\s====).)*)\s====|=====\s(((?!\s=====).)*)\s=====|======\s(((?!\s======).)*)\s======|=[#]\s(((?!\s[#]=).)*)\s[#]=|==[#]\s(((?!\s[#]==).)*)\s[#]==|===[#]\s(((?!\s[#]===).)*)\s[#]===|====[#]\s(((?!\s[#]====).)*)\s[#]====|=====[#]\s(((?!\s[#]=====).)*)\s[#]=====|======[#]\s(((?!\s[#]======).)*)\s[#]======)$/gm : /^(=\s(((?!\s=).)*)\s=|==\s(((?!\s==).)*)\s==|===\s(((?!\s===).)*)\s===|====\s(((?!\s====).)*)\s====|=====\s(((?!\s=====).)*)\s=====|======\s(((?!\s======).)*)\s======)$/gm ; const rHeading = [, ]; for(var i=1; i<=6; i++) { rHeading.push(RegExp(`^${multiply('=', i)}([#]|)\\s(((?!${multiply('=', i)}).)*)\\s([#]|)${multiply('=', i)}$`, 'm')); } }}} 그래서 이 문제를 해결하지 않는 이상 파서가 qt인 점은 해결하지 못할 것 같다. ==== 고질적 이슈2 - 지랄맞은 파서 반환값 ==== 뭐 이건 다들 알 것이다. 당장 구 하늘위키 도움말만 봐도 와장창 깨져있는데 뭐 더 할 말이 있나? 문법 지원에 대해서는 말을 아끼겠습니다. 구 하늘위키를 조금이라도 해 본 유저들이라면 충분히 뭐가 문제인지는 알 것이다. == 왜 개발이 늦어질까 == 뭐 아까 [[#s-2|위 문단]]에서 20초 요약이라고 넣은 ~~씹덕과 철덕의 콜라보레이션~~ 노래와 같은 상황이다 ||<table align=center><tablewidth=400px><bgcolor=#916292><color=#fff> 한계까지 발버둥친 공사는 || || 일단 가능한 한 모든 것을 갈아넣어 개조라는 이름의 정상화 시작 || ||<bgcolor=#916292><color=#fff> 상상 이상으로 난공사였고 || || 이 칸에 서술하기엔 공간이 너무 적어 각주로 설명.[* [[파일:이딴게위1키.png]]][* 우선, 틀 문법은 이미 모든 부분이 정규식과 알 수 없는 변수명들로 인해 읽기 힘든 지경에 있을 뿐더러, col 계열 문법의 핵심인 '한 줄에 적용'은 일반 html, css에선 적용하기 '''매우''' 힘든, 아니 그냥 불가능한 사항에 가깝다. 기껏 해봐야 간단한 문법들로 1차원적인 코드를 짜는 지경인데 복잡한 렌더러를 잘 구성할 수 있을까? 당연히 안 될 것이다. syntax, ruby, dday 등 구현되지 않은 문법들을 구현하는 것 또한 어렵다. 물론 단순히 정규식을 통해 변경된 값을 반환하는 것은 매우 쉽지만, 구현되지 않은 문법만 수십가지가 되기에 당연히 어려울 것이다.][* 탈퇴와 닉네임 변경은 UUID가 없는 현 병아리 특성상 일괄적으로 DB를 수정하게 되며 깨지는 현상이 있고, 심지어는 탈퇴를 하면 한 사용자로 인식된다는 큰 문제도 있다. 이로 인해 당연히 해당 기능을 다시 개발해야 한다.][* 테마에 따라 표시되는 파일이 다르게, 다른 테마의 파일은 표시되지 않게 하는 것 또한 매개변수를 추가해야 하고, 이를 구현하는 것에 큰 시간이 소요될 것이다. 안 그래도 svg 업로드 안 되는 문제조차 개판난 변수명과 뒤죽박죽 정규식으로 수정하지 못하는 상황인데 이를 잘 수정할 수 있을까? 없을 것이다.][* 그리고 the seed 하위 호환 문제도 있다. Node 메모리 할당이 1.4GB인데, 이를 초과하여 강제 종료되는 경우도 있다. 4.0.0부터 시작해 4.27.0까지 모든 버전을 커버해야 하기 때문에 자연스럽게 최적화는 개판이 되기 때문이다. 최적화를 위해 모든 체제를 손보려고 하면 사실상 모든 파일에 ver, verrev 함수가 포함되어 하위 호환을 책임지기에 이는 매우 어려운 상황이다.][* 이 외에도 문제는 아주 많다. 단순 편의성 개선이 1~3개라 가정하면 파서 수정은 10~30개, 기능 개선은 5~15개일 것이다. 아무리 단순한 토목 공사여도 24시간 노가다 뛰면 사람은 뒤진다. 안 그래도 적은 시간 쪼개고 쪼개서 개발하는 상황에서 이를 전부 다 해결하기에는 불가능할 것이고, 오랜 시간이 걸릴 것이다. 애초에 이미 기반 자체가 망가져있어 이 망가진 기반을 완전히 갈아엎어야 하는 상황이므로 자연스럽게 이 공사는 난공사일 수밖에 없다.]|| ||<bgcolor=#916292><color=#fff> 애매한 위치에서 단절된 || || 일단 큰 이슈들은 해결했지만 그럼에도 불구 || ||<bgcolor=#916292><color=#fff> 지티엑스에이 부분 개통 || || 아직 완전 개통[* 정식 릴리즈 배포]하지 못하는 퀄리티 || ||<bgcolor=#916292><color=#fff> 일단 개통하고 보니 현실은 || || 그래도 굴러가기는 하니 사용해보면 || ||<bgcolor=#916292><color=#fff> 남은 까마득한 공사 일정 || || 아직 한참 남은 수정할 부분들[* [[파일:이딴게위1키.png]] 더 이상 자세한 설명은 생략한다. ~~어쨌든 까마득한 공사 일정이죠?~~] || ||<bgcolor=#916292><color=#fff> 황금노선이라는 말 하나로 || || ~~황금 아니고 구리긴 한데~~ 우리만의 엔진이 될 수 있다는 생각을 가짐 || ||<bgcolor=#916292><color=#fff> 일단 개통 후 쪼개서 운행해 || || 근데 일단 써보십쇼 정상 작동은 안 합니다 ㅇㅇ || === 상세 === 추가 바람. == 개발일지 == === 문법 신창섭화 === ==== 동영상 매크로 ==== {{{#!syntax javascript // 동화상 for(let finc of (data.match(/\[(youtube|kakaotv|nicovideo|vimeo|navertv)[(](((?![)])(.|<spannw>[)]<\/spannw>))+)[)]\]/gi) || [])) { let inc = finc.match(/\[(youtube|kakaotv|nicovideo|vimeo|navertv)[(](((?!([)]))(.|<spannw>[)]<\/spannw>))+)[)]\]/i); let vid = inc[1].replace(/<spannw>[)]<\/spannw>/, ')'); let id = inc[2].replace(/<spannw>[)]<\/spannw>/, ')').split(',')[0].replace(/^(\s+)/, '').replace(/(\s+)$/, '').replace(/[&]quot;/g, '"').replace(/[&]amp;/g, '&').replace(/[&]lt;/g, '<').replace(/[&]gt;/g, '>'); let paramsa = inc[2].replace(/<spannw>[)]<\/spannw>/, ')').split(',').slice(1, 99999); let params = {}; for(let item of paramsa) { let pp = item.split('=')[0].replace(/^(\s+)/, '').replace(/(\s+)$/, '').toLowerCase(); params[pp] = item.replace(pp + '=', '').replace(/^(\s+)/, '').replace(/(\s+)$/, ''); } let d; switch(vid.toLowerCase()) { case 'youtube': { d = `<iframe allowfullscreen src="//www.youtube.com/embed/${encodeURIComponent(id)}${params.start ? `?start=${encodeURIComponent(params.start)}` : ''}${params.end ? ((params.start ? '&' : '?') + 'end=' + encodeURIComponent(params.end)) : ''}" loading=lazy width="${params.width || 640}" height="${params.height || 360}" frameborder=0></iframe>`; } break; case 'kakaotv': { d = `<iframe allowfullscreen src="//tv.kakao.com/embed/player/cliplink/${encodeURIComponent(id)}" loading=lazy width="${params.width || 640}" height="${params.height || 360}" frameborder=0></iframe>`; } break; case 'nicovideo': { d = `<iframe allowfullscreen src="//embed.nicovideo.jp/watch/sm${encodeURIComponent(id)}" loading=lazy width="${params.width || 720}" height="${params.height || 480}" frameborder=0></iframe>`; } break; case 'vimeo': { d = `<iframe allowfullscreen src="//player.vimeo.com/video/${encodeURIComponent(id)}" loading=lazy width="${params.width || 640}" height="${params.height || 360}" frameborder=0></iframe>`; } break; case 'navertv': { d = `<iframe allowfullscreen src="//tv.naver.com/embed/${encodeURIComponent(id)}" loading=lazy width="${params.width || 640}" height="${params.height || 360}" frameborder=0></iframe>`; } } data = data.replace(finc, d); } }}} 여기서 nicovideo.jp를 정상화해야한다 아주 간단하게 sm(id 8자리)와 (id 8자리) 둘 다 작동하게 수정해보자 {{{#!syntax javascript break; case 'nicovideo': { id = id.startsWith('sm') ? id : `sm${id}`; d = `<iframe allowfullscreen src="//embed.nicovideo.jp/watch/${encodeURIComponent(id)}" loading=lazy width="${params.width || 720}" height="${params.height || 480}" frameborder=0></iframe>`; } }}} 이렇게 정상화하면 잘 작동할 것이다 === 나무야 살려줘 === {{{#!syntax markdown {{{#!if namu != undefined 살려주세요}}} }}} 저거 구현하기 vs 엔진 개발 접기 ~~[[오버라이드|라면 잠시 후자를 고르겠어]]~~ 최종 결과 {{{#!syntax javascript else if(data.substr(pos + 3, 4) == '#!if' && !discussion) { ^^^ TypeError: data is not defined. at Eval(D:\169.9\routes\router.js:27:7) }}}
im preview
사용자
18.191.181.186
IP 사용자
로그인
회원가입
최근 변경
[불러오는 중...]
목차
닫기
사용자 문서
문서 기여 내역
토론 기여 내역
(없음)
×
설정
위키
토론
스킨
테마
자동 (시스템 설정)
라이트
다크
각주 표시 형식
브라우저 기본
팝오버
팝업
기본 편집 모드
편집기
RAW 편집
상대 시간 표시를 사용하지 않음
사용
내비게이션 바 고정
사용
사이드바 설정
기본
숨김
하단 표시
사용자 사이드바 끄기
사용
부드러운 스크롤
사용